package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.product.RCProductSpecification;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.impl.RCProductPurchaseItemImpl;
import com.shrct.businessprocess.purchase.proxy.RCProductPurchaseItemProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;

@EntityImplementation(implementBy = RCProductPurchaseItemImpl.class)
public interface RCProductPurchaseItem extends IModelObject, INamedModelObject {
  public abstract RCProductSpecification getProductSpec();
  
  public abstract RCProductPurchaseItem setProductSpec(final RCProductSpecification productSpec);
  
  public abstract Integer getQuantity();
  
  public abstract RCProductPurchaseItem setQuantity(final Integer quantity);
  
  public abstract RCProjectMoney getAmount();
  
  public abstract RCProductPurchaseItem setAmount(final RCProjectMoney amount);
  
  public abstract Integer getRequestQuantity();
  
  public abstract RCProductPurchaseItem setRequestQuantity(final Integer requestQuantity);
  
  public abstract Integer getOrderQuantity();
  
  public abstract RCProductPurchaseItem setOrderQuantity(final Integer orderQuantity);
  
  public abstract Integer getAcceptQuantity();
  
  public abstract RCProductPurchaseItem setAcceptQuantity(final Integer acceptQuantity);
  
  public abstract Integer getDeliveredQuantity();
  
  public abstract RCProductPurchaseItem setDeliveredQuantity(final Integer deliveredQuantity);
  
  /**
   * 已发货数量
   */
  public abstract void add(final Integer quantity, final RCProjectMoney amount);
  
  public abstract String getEntityName();
  
  public abstract RCProductPurchaseItemProxy toProxy();
}
